home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#)hello.c 1.1 97/03/27
- *
- * Executable for win32 jre demo.
- * Note how it ignores default classpath and sets its own.
- */
-
- #include <windows.h>
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys_api.h>
-
- #ifdef JAVA_ARGS
- #define NUM_ARGS (sizeof(java_args) / sizeof(char *))
- char *java_args[] = JAVA_ARGS;
- #else
- #define NUM_ARGS 0
- #endif
-
- #ifdef DEBUG
- #define JAVA "java_g"
- #else
- #define JAVA "java"
- #endif
-
- #ifdef WINMAIN
- #define main _main
- __declspec(dllimport) char **__initenv;
- #endif
-
- void
- setClassPath() {
- char loaddir[MAX_PATH], *cp;
-
- GetModuleFileName(NULL, loaddir, MAX_PATH);
- *(strrchr(loaddir, '\\')) = '\0';
-
- cp = (char *)malloc(5 * strlen(loaddir) + 200);
- sprintf(cp, "%s=%s\\..\\lib\\classes.jar;%s\\..\\lib\\rt.jar;"
- "%s\\classes;%s\\..\\lib\\i18n.jar"
- "%s\\..\\lib\\classes.zip",
- "CLASSPATH", loaddir, loaddir, loaddir, loaddir, loaddir);
- putenv(cp);
- putenv("JAVA_HOME=");
- }
-
- int
- main(int argc, char *argv[])
- {
- char **newargv, **ap;
- int i;
-
- setClassPath();
-
- newargv = ap = (char **) calloc(argc + NUM_ARGS + 1, sizeof(char *));
-
- *ap++ = JAVA;
-
- #ifdef JAVA_ARGS
- for (i = 0; i < NUM_ARGS; i++) {
- *ap++ = java_args[i];
- }
- #endif
-
- for (i = 1; i < argc; i++) {
- *ap++ = argv[i];
- }
-
- return java_main(argc + NUM_ARGS, newargv);
- }
-
- #ifdef WINMAIN
-
- int WINAPI
- WinMain(HINSTANCE inst, HINSTANCE previnst, LPSTR cmdline, int cmdshow)
- {
- int mainret;
-
- __initenv = _environ;
- mainret = main(__argc, __argv);
- sysExit(mainret);
- }
-
- #endif
-